1. Trasponer bases de datos

1.1. Transponer de long a wide

Vamos a usar la función dcast del paquete reshape2, para convertir las categorias de la columna year en las variables del nuevo dataframe. En el argumento data se escribe el df que queremos transponer, en el argumento formula se escribe del lado derecho la(s) variable(s) de 'id' y en el lado izquierdo separado por ~ se escribe la(s) variable(s) que queremos trasponer. En el script de la clase veremos otros ejemplos.

data_long
##     country year  gdp
## 1  Colombia 2018 4000
## 2 Venezuela 2018 2000
## 3  Colombia 2019 3800
## 4 Venezuela 2019 2500
## 5  Colombia 2020 3000
## 6 Venezuela 2020 3500
data_wide = reshape2::dcast(data = data_long, formula =  country ~ year , value.var="gdp")
data_wide
##     country 2018 2019 2020
## 1  Colombia 4000 3800 3000
## 2 Venezuela 2000 2500 3500

1.2. Transponer de wide a long

Vamos a usar la función melt del paquete reshape2, para convertir las variables 2018:2020 en una nueva columna de un dataframe. En el argumento data se escribe el df que queremos transponer, en el argumento id.vars se escribe la(s) variable(s) de 'id' y en el argumento value.name el nombre que le queremos poner a la variable vamos a crear los valores. En el script de la clase veremos otros ejemplos.

data_wide
##     country 2018 2019 2020
## 1  Colombia 4000 3800 3000
## 2 Venezuela 2000 2500 3500
reshape2::melt(data = data_wide,  id.vars=c("country") , value.name = 'gdp_pc')
##     country variable gdp_pc
## 1  Colombia     2018   4000
## 2 Venezuela     2018   2000
## 3  Colombia     2019   3800
## 4 Venezuela     2019   2500
## 5  Colombia     2020   3000
## 6 Venezuela     2020   3500

1.3. Cuando tenemos que transponer un dataframe con “multiple values columns”.

Sin embargo, cuando tenemos que transponer variables con multiples columnas que contienen valores, puede no ser tan simple.

Vamos a replicar este ejemplo de stackoverflow (en casa).